SUPPORT / SAMPLES & SAS NOTES
 

Support

Problem Note 48092: A syntax error appears when you use a %INCLUDE statement that references a concatenation of an extended partitioned data sets (PDSE)

DetailsAboutRate It

When you use a %INCLUDE statement, unexpected syntax errors might occur. The errors usually involve incorrect parsing of the code that is included by the %INCLUDE statement.

The problem occurs when a %INCLUDE statement references sections of SAS code from several members of concatenated extended partitioned data sets (PDSEs). Referencing PDSEs might skip some data when PDSEs do not have the same block size.

To work around this problem, specify the largest block size of the PDSE in the concatenation when you make each PDSE allocation.

PDSE Concatenation Example

Consider the following example PDSE concatenation:

//SASINCLD DD DSN=USERID.TESTPDSE.FB80.BLK8000,DISP=SHR // DD DSN=USERID.TESTPDSE.FB80.BLK4640,DISP=SHR // DD DSN=USERID.TESTPDSE.FB80.BLK27920,DISP=SHR

For this example, each PDSE has the same record-format and record-length specification, but each has a different block size value. The SASINCLD ddname allocation is referenced in a %INCLUDE statement:

%include sasincld(member);

Because the block-size values are different, it is possible that the SAS code inside a member of the USERID.TESTPDSE.FB80.BLK4640 PDSE might be read only partially. The following output shows that the SAS code for the DATA step is not read completely. The truncated DATA step is followed by PROC PRINT code, and a syntax error results.

367 + DATA ORDERS 368 + (KEEP=VAR1 VAR2 NOTE: %INCLUDE (LEVEL 1) ENDING. 369 PROC PRINT N UNIFORM DATA=ORDERS ; ____ _ ____ _ ____ _ 22 6 22 6 22 6 79 79 79 ERROR 22-7: INVALID OPTION NAME DATA. ERROR 22-7: INVALID OPTION NAME DATA. ERROR 22-7: INVALID OPTION NAME DATA. ERROR 6-185: MISSING ')' PARENTHESIS FOR DATA SET OPTION LIST. ERROR 6-185: MISSING ')' PARENTHESIS FOR DATA SET OPTION LIST.

To circumvent the problem in this example, specify 27920 (the largest block size of the PDSE in the concatenation) when you allocate the PDSEs, as shown below:

//SASINCLD      DD DSN=USERID.TESTPDSE.FB80.BLK8000,DISP=SHR,BLKSIZE=27920  
//              DD DSN=USERID.TESTPDSE.FB80.BLK4640,DISP=SHR,BLKSIZE=27920  
//              DD DSN=USERID.TESTPDSE.FB80.BLK27920,DISP=SHR,BLKSIZE=27920         


Operating System and Release Information

Product FamilyProductSystemProduct ReleaseSAS Release
ReportedFixed*ReportedFixed*
SAS SystemBase SASz/OS9.219.3_M29.2 TS2M09.3 TS1M2
* For software releases that are not yet generally available, the Fixed Release is the software release in which the problem is planned to be fixed.